package fe.pong.tennis.gameElements;

import flash.display.Bitmap;
import flash.geom.Point;
import openfl.Assets;
import fe.pong.tennis.fisica.Fisica;
import fe.pong.tennis.screens.GamePlayScreen;

class Pelota extends Personaje {

	private var _anchoPantalla: Int;
	private var _altoPantalla: Int;
	private var _fisica: Fisica;
	private var highBounce : Bool;
	private var lowBounce : Bool;

	public function new (anchoPantalla: Int, altoPantalla: Int, x: Float, y: Float, angulo: Float, tamanio: Float, tiempo: Float) {
		super();
		addChild(new Image("images/tennisball.png", tamanio));
		_colissionArea.width = tamanio;
		_colissionArea.height = tamanio;
		_anchoPantalla = anchoPantalla;
		_altoPantalla = altoPantalla;

		this.x = x;
		this.y = y;

		_fisica = new Fisica(0, 30, angulo, x, y, tiempo);
		lowBounce = false;
		highBounce = false;
	}

	public function shoot(player: Player) {
		_fisica.recibirGolpe(player.getShoot());
	}

	override public function updateLogic(time:Float) {
		super.updateLogic(time);
		x = _fisica.getX(time);
		y = _fisica.getY(time);
		highBounce = false;
		lowBounce = false;
		if (y < 0){
			_fisica.setY(_altoPantalla / 2);
			lowBounce = true;
		}
		else
			if (y + height > _altoPantalla){
				_fisica.setY(_altoPantalla / 2);
				highBounce = true;
			}
		if (x < 0)
			_fisica.moverHaciaDerecha();
		else
			if (x + width > _anchoPantalla)
				_fisica.moverHaciaIzquierda();
	}

	private function crearHijo(angulo: Float, tiempo: Float) {
		return new Pelota(
			_anchoPantalla,
			_altoPantalla,
			x + width/4,
			y + height/4,
			angulo,
			height / 2,
			tiempo);
	}
	
	public function getHighBounce() : Bool{
		return highBounce;
	}
	
	public function getLowBounce() : Bool{
		return lowBounce;
	}
	
}